Add config entry to override server chunk size
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 20 Jan 2025 03:59:27 +0000 (11:59 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 23 Jan 2025 02:13:51 +0000 (10:13 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/folder.cpp
src/libsync/configfile.cpp
src/libsync/configfile.h

index ee028cdd248b493cb24c02d65da425fe9e90dcec..070f7575941b0f8035e1e00e323baffa25693ec7 100644 (file)
@@ -1154,7 +1154,7 @@ SyncOptions Folder::initializeSyncOptions() const
     opt._parallelNetworkJobs = account->isHttp2Supported() ? 20 : 6;
 
     // Chunk V2: Size of chunks must be between 5MB and 5GB, except for the last chunk which can be smaller
-    if (const auto capsMaxChunkSize = account->capabilities().maxChunkSize(); capsMaxChunkSize <= 0) {
+    if (const auto capsMaxChunkSize = account->capabilities().maxChunkSize(); capsMaxChunkSize <= 0 && !cfgFile.overrideServerChunkSize) {
         opt.setMinChunkSize(capsMaxChunkSize);
         opt.setMaxChunkSize(capsMaxChunkSize);
         opt._initialChunkSize = capsMaxChunkSize);
index 2b1cda432e597094ff865ce9e6b71bff398aa468..1297e5067e50daaed0331a84fc9431f1ba9ff779 100644 (file)
@@ -70,6 +70,7 @@ static constexpr char overrideLocalDirC[] = "overrideLocalDir";
 static constexpr char isVfsEnabledC[] = "isVfsEnabled";
 static constexpr char geometryC[] = "geometry";
 static constexpr char timeoutC[] = "timeout";
+static constexpr char overrideServerChunkSize[] = "overrideServerChunkSize";
 static constexpr char chunkSizeC[] = "chunkSize";
 static constexpr char minChunkSizeC[] = "minChunkSize";
 static constexpr char maxChunkSizeC[] = "maxChunkSize";
@@ -258,6 +259,12 @@ int ConfigFile::timeout() const
     return settings.value(QLatin1String(timeoutC), 300).toInt(); // default to 5 min
 }
 
+bool ConfigFile::overrideServerChunkSize() const
+{
+    QSettings settings(configFile(), QSettings::IniFormat);
+    return settings.value(QLatin1String(overrideServerChunkSize), false).toBool();
+}
+
 qint64 ConfigFile::chunkSize() const
 {
     QSettings settings(configFile(), QSettings::IniFormat);
index 844036336a6f9b0c650276a0a7c67bacdd91fbe8..27a83a5c2e15c26fcc8c15e69fb0267a4b8f70ae 100644 (file)
@@ -177,6 +177,7 @@ public:
     void setShowInExplorerNavigationPane(bool show);
 
     [[nodiscard]] int timeout() const;
+    [[nodiscard]] bool overrideServerChunkSize() const;
     [[nodiscard]] qint64 chunkSize() const;
     [[nodiscard]] qint64 maxChunkSize() const;
     [[nodiscard]] qint64 minChunkSize() const;